package utils;

/**
 * @author edu
 * 
 * @param <T1>
 * @param <T2>
 */
public class Pair<T1, T2>
{

	private T1	firstElem;
	private T2	secondElem;

	public Pair() {
		this.firstElem = null;
		this.secondElem = null;
	}

	public Pair(T1 firstElem, T2 secondElem) {
		this.firstElem = firstElem;
		this.secondElem = secondElem;
	}

	/**
	 * @return el primer elemento del par
	 */
	public T1 getFirstElem()
	{
		return firstElem;
	}

	/**
	 * @param firstElem
	 * 								Actualiza el primer elemento del par
	 */
	public void setFirstElem(T1 firstElem)
	{
		this.firstElem = firstElem;
	}

	/**
	 * @return el segundo elemento del par
	 */
	public T2 getSecondElem()
	{
		return secondElem;
	}

	/**
	 * @param secondElem
	 * 								Actualiza el segundo elemento del par
	 */
	public void setSecondElem(T2 secondElem)
	{
		this.secondElem = secondElem;
	}

	// retorna un string representando al par
	public String toString()
	{
		String res = "";
		if ((firstElem == null) & (secondElem == null)) {
			res = "(null,null)";
		} else if ((firstElem == null) & (secondElem != null)) {
			res = "(null," + secondElem.toString() + ")";
		} else if ((firstElem != null) & (secondElem == null)) {
			res = "(" + firstElem.toString() + ",null)";
		} else {
			res = "(" + firstElem.toString() + "," + secondElem.toString() + ")";
		}
		return res;
	}

}
